<?php
namespace common\helper;
use common\helper\CommonHelper;

class financeHelper extends CommonHelper{
    public function __construct()
    {
         
    }

    
    /**
     * 修改bcadd方法，避免直接截取小数位不四舍五入的问题
     * @param Float $left_value 加号左边数
     * @param Float $right_value 加号右边数
     * @param Int $decimal_places 保留小数位，默认0
     * @return Float 返回结果，会四舍五入
     */
    public static function round_bcadd($left_value,$right_value,$decimal_places=0){
        return round(bcadd($left_value,$right_value,bcadd($decimal_places,2)),$decimal_places);
    }

    /**
     * 修改bcsub方法，避免直接截取小数位不四舍五入的问题
     * @param Float $left_value 减号左边数
     * @param Float $right_value 减号右边数
     * @param Int $decimal_places 保留小数位，默认0
     * @return Float 返回结果，会四舍五入
     */
    public static function round_bcsub($left_value,$right_value,$decimal_places=0){
        return round(bcsub($left_value,$right_value,bcadd($decimal_places,2)),$decimal_places);
    }

    /**
     * 修改bcmul方法，避免直接截取小数位不四舍五入的问题
     * @param Float $left_value 乘号左边数
     * @param Float $right_value 乘号右边数
     * @param Int $decimal_places 保留小数位，默认0
     * @return Float 返回结果，会四舍五入
     */
    public static function round_bcmul($left_value,$right_value,$decimal_places=0){
        return round(bcmul($left_value,$right_value,bcadd($decimal_places,2)),$decimal_places);
    }

    /**
     * 修改bcdiv方法，避免直接截取小数位不四舍五入的问题
     * @param Float $left_value 分子
     * @param Float $right_value 分母
     * @param Int $decimal_places 保留小数位，默认0
     * @return Float 返回结果，会四舍五入
     */
    public static function round_bcdiv($left_value,$right_value,$decimal_places=0){
        return round(bcdiv($left_value,$right_value,bcadd($decimal_places,2)),$decimal_places);
    }

    /**
     * 金额保留2位小数，不四舍五入
     * @param $money_num float
     * @return float
     */
    function format_money($money_num){
        // 保留2位小数，不四舍五入
        $money = substr(sprintf("%.3f", $money_num),0,-1);
        $money = floatval($money);
        return $money;
    }

}